import pandas as pd
import numpy as np
import math as mt
from scipy import stats
import matplotlib.pyplot as plt
from datetime import date, timedelta
import calendar
import statsmodels.api as sm
import warnings
import collections
%pylab inline
from mpl_toolkits.basemap import Basemap
from ipywidgets import widgets
import folium
file_obj = open('Chosen_2_week.txt','r')
regions = file_obj.read()
regions = regions.split(',')
regions = list(map(int,regions))
data_im = pd.read_csv('regions.csv',header = 0,sep = ';')
data_im.head()
conclusions = [pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame(),pd.DataFrame()]
for i in range(6):
strok_2 = 'conclusions_'+str(i)+'.csv'
conclusions[i] = pd.read_csv(strok_2,sep = '\t',header = 0)
for i in range(6):
conclusions[i] = pd.merge(conclusions[i],data_im,how='left',on='region')
print(i)
conclusions[0].head()
def pp(m1):
m = m1
path = []
path.append([m[1],m[3]])
path.append([m[1],m[4]])
path.append([m[2],m[4]])
path.append([m[2],m[3]])
#path.append([m[0],m[2]])
return np.array(path), m1[0]
def pp_new(m1):
m = m1[1:]
path = []
path.append((m[2],m[1]))
path.append((m[3],m[0]))
path.append((m[3],m[1]))
path.append((m[2],m[1]))
#path.append([m[0],m[2]])
return np.array(path)
Timeline= list(conclusions[0][conclusions[0]['region'] == 1075].data_pick.values)
M = max(conclusions[0].passenger_count.values)
def Act_For(Region):
plt.figure(figsize = (30,60))
plt.subplot(6, 1, 1)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[0][conclusions[0]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 1 HOUR')
plt.subplot(6, 1, 2)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[1][conclusions[1]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 2 HOUR')
plt.subplot(6, 1, 3)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[2][conclusions[2]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 3 HOUR')
plt.subplot(6, 1, 4)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[3][conclusions[3]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 4 HOUR')
plt.subplot(6, 1, 5)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[4][conclusions[4]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 5 HOUR')
plt.subplot(6, 1, 6)
conclusions[0][conclusions[0]['region'] == Region].passenger_count.plot(color = 'black', label = 'Actual')
conclusions[5][conclusions[5]['region'] == Region].Predictions_3.plot(linestyle = '--',color = 'green', label = 'Forecast')
plt.legend()
plt.title('Time_difference: 6 HOUR')
conclusions[0][conclusions[0]['data_trig'] == 2904][['passenger_count','west','east','south','north']].values[0]
def Mapp(Time,F):
print(conclusions[0][conclusions[0]['data_trig'] == Time].data_pick.values[0])
fig = plt.figure(figsize=(20,15))
plt.figure(0)
color_1 = 'blue'
color_2 = 'red'
color_1 = Color(color_1)
color_2 = Color(color_2)
grad = list(color_1.range_to(color_2, int(M+1)))
# Colorbar.
trips_values = list(range(0, int(M)))
colorbar = np.array([[tuple([int(round(j*255, 0)) for j in grad[int(i)].rgb]) for i in trips_values] for _ in range(100)])
plt.imshow(colorbar)
plt.yticks([])
ticks = list(range(len(trips_values)))
plt.xticks(ticks=ticks[::200] + [ticks[-1]], labels=trips_values[::200] + [trips_values[-1]])
plt.title('Количество поездок в час', y=1.01, fontsize=20)
plt.show()
plt.figure(1)
fig = plt.figure(figsize=(25,25))
ax1 = plt.subplot2grid((1,2), (0,0))
ax2 = plt.subplot2grid((1,2), (0,1))
m_1 = Basemap(llcrnrlon=-74.25559,llcrnrlat=40.49612,urcrnrlon=-73.70001,urcrnrlat=40.91553,
resolution='h', projection='cyl', lat_0 = 40.748306, lon_0 = -73.985756, ax=ax1)
m_1.drawcoastlines()
m_1.drawcountries()
temp_data_1 = conclusions[0][conclusions[0]['data_trig'] == Time][['passenger_count','west','east','south','north']]
for i in range(102):
patches = []
homeplate = np.array(pp(temp_data_1.values[i])[0])
k = pp(temp_data_1.values[i])[1]
fillcolor = grad[int(k+1)].hex_l
patches.append(Polygon(homeplate))
ax1.add_collection(PatchCollection(patches, facecolor=fillcolor))
ax1.set_title("Actual")
# ------------------------------------------------------------------------------------------------------------------------
m_2 = Basemap(llcrnrlon=-74.25559,llcrnrlat=40.49612,urcrnrlon=-73.70001,urcrnrlat=40.91553,
resolution='h', projection='cyl', lat_0 = 40.748306, lon_0 = -73.985756, ax=ax2)
m_2.drawcoastlines()
m_2.drawcountries()
temp_data_2 = conclusions[0][conclusions[0]['data_trig'] == Time+F][['Predictions_3','west','east','south','north']]
for i in range(102):
patches = []
homeplate = np.array(pp(temp_data_2.values[i])[0])
k = pp(temp_data_2.values[i])[1]
fillcolor = grad[int(k+1)].hex_l
patches.append(Polygon(homeplate))
ax2.add_collection(PatchCollection(patches, facecolor=fillcolor))
strok = 'Forecast in '+str(F)+' hour(s)'
ax2.set_title(strok)
plt.show()
widgets.interact(Act_For,Region=regions)
w = widgets.interactive(Mapp, Time=(2904,3623,1), F=(0,6,1))
display(w)